/** @file
 * @brief Scan an input file, recording label-definitions, etc.
 *
 * All special actions are introduced by a line starting
 * @verbatim
.<macro>
@endverbatim
 * where @a macro is "L=" unless redefined in the command-line.
 * Actions are
 * <DL>
 * <DT>.L= <em>type level label</em></DT>
 * <DD>
 * define @a label by incrementing the @a levelth
 * index of label-type @a type, e.g.
 * @verbatim
.L= table 1 profits_1983
@endverbatim
 * </DD>
 * <DT>.L= delimiter @a char</DT>
 * <DD>
 * redefines the delimiter for the subsequent text.
 * </DD>
 * <DT>.L= format <em>type string</em></DT>
 * <DD>
 * defines a format for displaying the given label @a type;
 * the latest definition in the input will be used for
 * ALL occurrences, including preceding ones.
 * e.g.
 * @verbatim
.L= format appendix %A-%1
@endverbatim
 * </DD>
 * <DT>.L= next <em>type value value ...</em></DT>
 * <DD>
 * set the value of the next label generated for @a type;
 * the @a values give successive levels, with omitted
 * trailing values defaulting to 0.
 * </DD>
 * </DL>
 */

#ifndef _SCAN_H_
#define _SCAN_H_

/**
 * @brief First pass to parse the input file and output a temporary file
 *        with directives.
 * @param fname the name of the input file to process
 * @param f a file handle opened to read fname
 */
void scan(char *fname, FILE *f);

#endif
